home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / tcl / xf2.3-p / xf2 / xf2.3 / xftutorial / script.xf / packing.scrpt < prev    next >
Encoding:
Text File  |  1993-11-20  |  8.2 KB  |  245 lines

  1. # tutorial
  2. global packingLast
  3. set packingLast 8
  4. global packingLastSectionDone
  5. set packingLastSectionDone -1
  6.  
  7.  
  8. set packingName0 {Packing}
  9. set packingText0 {\
  10. This chapter tries to introduce you into the usage of the
  11. packer. The packer organizes the children of a widget by
  12. packing them around the edges of the parent. The first child
  13. is placed against one side of the window, occupying the
  14. entire span of the window along that side. This reduces the
  15. space remaining for other children as if the side had been
  16. moved in by the size of the first child. Then the next child
  17. is placed against one side of the remaining cavity, and so
  18. on until all children have been placed or there is no space
  19. left in the cavity. ((Copyright) by John Ousterhout :-).
  20.  
  21. To give you a basic idea, we will now play a little with the
  22. options that are available with the packer.}
  23.  
  24. set packingCommand0 {\
  25. XFMiscClearInterpreter
  26. global xfConf xfPath
  27. set xfConf(saveInterval) 0
  28. set xfConf(onlyOneWindow) 0
  29. set xfConf(externalEditor) ""
  30. set xfConf(geometry) packer
  31. set xfConf(newPacker) 0
  32. source "$xfPath(src)/xfpacking.tcl"
  33. wm geometry . 300x300
  34. frame .frame -relief raised -borderwidth 1
  35. frame .frame.frame1 -relief raised -borderwidth 1
  36. frame .frame.frame2 -relief raised -borderwidth 1
  37. button .frame.frame1.button1 -text .frame1.button1
  38. button .frame.frame1.button2 -text .frame1.button2
  39. button .frame.frame1.button3 -text .frame1.button3
  40. button .frame.frame2.button1 -text .frame2.button1
  41. button .frame.frame2.button2 -text .frame2.button2
  42. button .frame.frame2.button3 -text .frame2.button3
  43. pack append .frame.frame1 .frame.frame1.button1 {top} .frame.frame1.button2 {top} .frame.frame1.button3 {top} 
  44. pack append .frame.frame2 .frame.frame2.button1 {top} .frame.frame2.button2 {top} .frame.frame2.button3 {top} 
  45. pack append .frame .frame.frame1 {top} .frame.frame2 {top}
  46. pack append . .frame "top fill expand"
  47. XFPacking . config Toplevel
  48. update idletasks}
  49.  
  50.  
  51. set packingName1 {Packing - left}
  52. set packingText1 {\
  53. The widget structure contains one top frame. This frame has
  54. two children frames. Each children frame has three children
  55. of the class button.
  56.  
  57. Now all children are just packed "top". This means they are
  58. placed against the top edge of the parent. Let's see what
  59. happens if we pack the both frames left. They are standing
  60. one beside the other, packed to the left edge of the
  61. parent.}
  62.  
  63. set packingCommand1 {\
  64. .xfPackingToplevel.frame2.children.widgets.widgets select from 1
  65. .xfPackingToplevel.frame2.children.widgets.widgets select to 1
  66. update idletasks
  67. XFPackingMakeMaster .frame config Toplevel
  68. update idletasks
  69. .xfPackingToplevel.frame2.children.childs.childs select from 0
  70. .xfPackingToplevel.frame2.children.childs.childs select to 0
  71. update idletasks
  72. XFPackingGetPacking .frame Toplevel
  73. update idletasks
  74. .xfPackingToplevel.frame2.side.left configure -state active
  75. update idletasks
  76. .xfPackingToplevel.frame2.side.left configure -relief sunken
  77. update idletasks
  78. .xfPackingToplevel.frame2.side.left invoke
  79. update idletasks
  80. .xfPackingToplevel.frame2.side.left configure -state normal
  81. update idletasks
  82. .xfPackingToplevel.frame2.side.left configure -relief raised
  83. update idletasks
  84. .xfPackingToplevel.frame2.children.childs.childs select from 1
  85. .xfPackingToplevel.frame2.children.childs.childs select to 1
  86. update idletasks
  87. XFPackingGetPacking .frame Toplevel
  88. update idletasks
  89. .xfPackingToplevel.frame2.side.left configure -state active
  90. update idletasks
  91. .xfPackingToplevel.frame2.side.left configure -relief sunken
  92. update idletasks
  93. .xfPackingToplevel.frame2.side.left invoke
  94. update idletasks
  95. .xfPackingToplevel.frame2.side.left configure -state normal
  96. update idletasks
  97. .xfPackingToplevel.frame2.side.left configure -relief raised
  98. update idletasks}
  99.  
  100.  
  101. set packingName2 {Packing - expand}
  102. set packingText2 {\
  103. To make a child filling the remaining space in the parent
  104. you can specify "expand". You see, that the left frame now
  105. occupies the complete horizontal space. The right frame only
  106. occupies the minimal space it requires.}
  107.  
  108. set packingCommand2 {\
  109. .xfPackingToplevel.frame2.children.childs.childs select from 0
  110. .xfPackingToplevel.frame2.children.childs.childs select to 0
  111. update idletasks
  112. XFPackingGetPacking .frame Toplevel
  113. update idletasks
  114. .xfPackingToplevel.frame2.expand.expand configure -state active
  115. update idletasks
  116. .xfPackingToplevel.frame2.expand.expand configure -relief sunken
  117. update idletasks
  118. .xfPackingToplevel.frame2.expand.expand invoke
  119. update idletasks
  120. .xfPackingToplevel.frame2.expand.expand configure -state normal
  121. update idletasks
  122. .xfPackingToplevel.frame2.expand.expand configure -relief raised
  123. update idletasks}
  124.  
  125.  
  126. set packingName3 {Packing - pad}
  127. set packingText3 {\
  128. If a child should have a border, you can specify a pad. This
  129. means, that the widget requests an additional amount of
  130. space. You see, that the right frame now has some kind of
  131. border.}
  132.  
  133. set packingCommand3 {\
  134. .xfPackingToplevel.frame2.children.childs.childs select from 1
  135. .xfPackingToplevel.frame2.children.childs.childs select to 1
  136. update idletasks
  137. XFPackingGetPacking .frame Toplevel
  138. update idletasks
  139. .xfPackingToplevel.frame2.chldframe.pad.pad1.pad1 set 10
  140. update idletasks
  141. .xfPackingToplevel.frame2.chldframe.pad.pad2.pad2 set 10
  142. update idletasks
  143. .xfPackingToplevel.frame2.side.left invoke
  144. update idletasks}
  145.  
  146.  
  147. set packingName4 {Packing - frame}
  148. set packingText4 {\
  149. The left frame occupies the complete remaining space.  The
  150. frame itself only uses a part of the occupied space. To
  151. place the frame inside of the occupied space you can use the
  152. frame option. We now place the left frame in the upper left
  153. corner.}
  154.  
  155. set packingCommand4 {\
  156. .xfPackingToplevel.frame2.children.childs.childs select from 0
  157. .xfPackingToplevel.frame2.children.childs.childs select to 0
  158. update idletasks
  159. XFPackingGetPacking .frame Toplevel
  160. update idletasks
  161. .xfPackingToplevel.frame2.frame.f1.nw invoke
  162. update idletasks}
  163.  
  164.  
  165. set packingName5 {Packing - fill}
  166. set packingText5 {\
  167. Now we force the left frame to use the complete occupied
  168. space for displaying the frame. You see that the frame fills
  169. out the complete occupied space.}
  170.  
  171. set packingCommand5 {\
  172. .xfPackingToplevel.frame2.children.childs.childs select from 0
  173. .xfPackingToplevel.frame2.children.childs.childs select to 0
  174. update idletasks
  175. XFPackingGetPacking .frame Toplevel
  176. update idletasks
  177. .xfPackingToplevel.frame2.fill.fillx invoke
  178. update idletasks
  179. .xfPackingToplevel.frame2.fill.filly invoke
  180. update idletasks}
  181.  
  182.  
  183. set packingName6 {Packing - misc}
  184. set packingText6 {\
  185. Now we pack the last button in the first frame to the
  186. bottom. You see that the button now is displayed at the
  187. bottom of the frame.}
  188.  
  189. set packingCommand6 {\
  190. .xfPackingToplevel.frame2.children.widgets.widgets select from 6
  191. .xfPackingToplevel.frame2.children.widgets.widgets select to 6
  192. update idletasks
  193. XFPackingMakeMaster .frame.frame1 config Toplevel
  194. update idletasks
  195. .xfPackingToplevel.frame2.children.childs.childs select from 2
  196. .xfPackingToplevel.frame2.children.childs.childs select to 2
  197. update idletasks
  198. XFPackingGetPacking .frame.frame1 Toplevel
  199. update idletasks
  200. .xfPackingToplevel.frame2.side.bottom invoke
  201. update idletasks}
  202.  
  203.  
  204. set packingName7 {Packing - misc}
  205. set packingText7 {\
  206. Finally we set the first button in the left frame to expand
  207. and let him use the complete space for displaying the button
  208. (fill). You see that the first button now occupies the
  209. complete remaining space in the left frame.}
  210.  
  211. set packingCommand7 {\
  212. .xfPackingToplevel.frame2.children.childs.childs select from 0
  213. .xfPackingToplevel.frame2.children.childs.childs select to 0
  214. update idletasks
  215. XFPackingGetPacking .frame.frame1 Toplevel
  216. update idletasks
  217. .xfPackingToplevel.frame2.fill.fillx invoke
  218. update idletasks
  219. .xfPackingToplevel.frame2.fill.filly invoke
  220. update idletasks
  221. .xfPackingToplevel.frame2.expand.expand configure -state active
  222. update idletasks
  223. .xfPackingToplevel.frame2.expand.expand configure -relief sunken
  224. update idletasks
  225. .xfPackingToplevel.frame2.expand.expand invoke
  226. update idletasks
  227. .xfPackingToplevel.frame2.expand.expand configure -state normal
  228. update idletasks
  229. .xfPackingToplevel.frame2.expand.expand configure -relief raised
  230. update idletasks}
  231.  
  232.  
  233. set packingName8 {Packing - misc}
  234. set packingText8 {\
  235. That was all...}
  236.  
  237. set packingCommand8 {
  238. .xfPackingToplevel.frame1.ok configure -state active
  239. update idletasks
  240. .xfPackingToplevel.frame1.ok configure -relief sunken
  241. update idletasks
  242. .xfPackingToplevel.frame1.ok invoke
  243. update idletasks}
  244.  
  245.